#include "init.h"
#include "headfile.h"
#include "ScnsInclude.h"

void init(void)
{
    SystemInit();
    uint16 errN=0;
    static const Point errPlu={0,0};
    uint64 displayUs=0;
    scnsTryInit(SCNS_STATUS_OK,scnsYingInit());
    scnsTryInit(SCNS_STATUS_OK,scnsKeyInit());
    scnsTryInit(SCNS_STATUS_OK,scnsMenuInit());
    scnsTryInit(SCNS_STATUS_OK,scnsTimerInit());
#if __SCNS_DEVICE_ID__==1
    scnsTryInit(SCNS_STATUS_OK,scnsLedInit(SCNS_LED_D3));
    scnsTryInit(SCNS_STATUS_OK,scnsLedInit(SCNS_LED_D4));
    scnsTryInit(SCNS_STATUS_OK,scnsLedInit(SCNS_LED_D5));
    scnsTryInit(SCNS_STATUS_OK,scnsLedInit(SCNS_LED_D6));
    scnsTryInit(SCNS_STATUS_OK,scnsLedInit(SCNS_LED_D7));
    scnsTryInit(SCNS_STATUS_OK,scnsPowerInit());
#endif
#if __SCNS_DEVICE_ID__==2
    scnsTryInit(SCNS_STATUS_OK,scnsLedRgbInit(SCNS_LED_RGB_L));
    scnsTryInit(SCNS_STATUS_OK,scnsLedRgbInit(SCNS_LED_RGB_R));
#endif
    
    scnsTryInit(SCNS_STATUS_OK,scnsIwdgInit());
    scnsTryInit(SCNS_STATUS_OK,scnsLcdInit());
    scnsTryInit(SCNS_STATUS_OK,scnsSmctpInit());
    scnsTryInit(SCNS_STATUS_OK,scnsKeyboardGpioInit());
    scnsTryInit(SCNS_STATUS_OK,scnsBeepInit());
    
    scnsBeepAdd("1");
    
    scnsTryInit(SCNS_STATUS_OK,scnsNrf24L01Init(SCNS_NRF24L01_1));
    scnsTryInit(SCNS_STATUS_OK,scnsJoystickInit(SCNS_JOYSTICK_L));
    scnsTryInit(SCNS_STATUS_OK,scnsJoystickInit(SCNS_JOYSTICK_R));
    //scnsJoystickCorrection(SCNS_JOYSTICK_L);
    //scnsJoystickCorrection(SCNS_JOYSTICK_R);
    //scnsTryInit(SCNS_STATUS_OK,scnsGyroInit(SCNS_GYRO_1));
    scnsTimerMarkInited();
    scnsBeepAdd("2");
    printfFL("Init finish %d error\n",errN);
    scnsLcdDisplayInt16(SCNS_LCD_LAYER_AUTO,(Point){0,(errN)<<4},errN,&scnsLcdFontSimSun16,SCNS_LCD_COLOR_YELLOW,SCNS_LCD_COLOR_BACKGROUND,0);
    for(uint64 t=scnsTimerGetMs()+600*(errN+1);scnsTimerGetMs()<t;)
    {
        scnsIwdgFeed();
        scnsMenuFresh();
    }
    scnsBeepAdd("3");
    scnsMenuSetMode(SCNS_MENU_MODE_KEY|SCNS_MENU_MODE_SMCTP|SCNS_MENU_MODE_LCD);
    scnsLedSet(SCNS_LED_D3,SCNS_LED_SWITCH_OFF);
    scnsLedSet(SCNS_LED_D4,SCNS_LED_SWITCH_OFF);
    scnsLedSet(SCNS_LED_D6,SCNS_LED_SWITCH_OFF);
    scnsLedSet(SCNS_LED_D7,SCNS_LED_SWITCH_OFF);
}
